home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacFormat España 15
/
macformat_15.iso
/
Shareware Internet
/
Ciencia
/
CFG 2.3 (Shareware)
/
µCinema Converter
/
events.c
< prev
next >
Wrap
Text File
|
1994-04-02
|
5KB
|
250 lines
/********************************************************************
µCinema Converter 1.0
module: events.c
April 1994
by John A. Schlack
********************************************************************/
#include "constants.h"
#include "events.h"
#include "menu bar.h"
#include "PICS to QuickTime.h"
#include "preferences.h"
#include "µCinema.h"
/* --------------------------------------------------------------------------------- */
#define ABOUT_ITEM 1
#define CONVERT_ITEM 1
#define PREFS_ITEM 2
#define QUIT_ITEM 3
#define ABOUT_DIALOG 128
#define ABOUT_PICT_ITEM 1
#define ABOUT_FAKE_ITEM 2 /* not part of about, but value is set when hit escape key */
/* --------------------------------------------------------------------------------- */
static void eventMouseDown( EventRecord * event );
static void eventMenuChoice( long menuChoice );
static void eventAppleMenu( short theItem );
static void eventFileMenu( short theItem );
static void aboutCinema( void );
static pascal Boolean aboutDialogFilter( DialogPtr whichDialog, EventRecord * event,
short * itemHit );
/* --------------------------------------------------------------------------------- */
void doEvents( void )
{
EventRecord event;
Boolean lastNull;
char theChar;
lastNull = !WaitNextEvent( everyEvent, &event, 20L, nil );
alterProgramStatus( PS_LAST_EVENT_NULL, lastNull );
switch( event.what )
{
case kHighLevelEvent:
AEProcessAppleEvent( &event );
break;
case keyDown:
case autoKey:
if (event.modifiers & cmdKey)
{
theChar = event.message & charCodeMask;
eventMenuChoice( MenuKey( theChar ) );
}
break;
case mouseDown:
eventMouseDown( &event );
break;
}
}
/* --------------------------------------------------------------------------------- */
static void eventMouseDown( EventRecord * event )
{
WindowPtr whichWindow;
long menuChoice;
short thePart;
thePart = FindWindow( event->where, &whichWindow );
switch ( thePart )
{
case inMenuBar:
menuChoice = MenuSelect( event->where );
eventMenuChoice( menuChoice );
break;
case inSysWindow :
SystemClick( event, whichWindow );
break;
}
}
/* --------------------------------------------------------------------------------- */
static void eventMenuChoice( long menuChoice )
{
short theMenu, theItem;
if ( menuChoice )
{
theMenu = HiWord( menuChoice );
theItem = LoWord( menuChoice );
switch ( theMenu )
{
case APPLE_MENU_ID :
eventAppleMenu( theItem );
break;
case FILE_MENU_ID :
eventFileMenu( theItem );
break;
}
HiliteMenu( 0 );
}
}
/* --------------------------------------------------------------------------------- */
static void eventAppleMenu( short theItem )
{
Str255 accName;
short accNumber;
switch ( theItem )
{
case ABOUT_ITEM :
aboutCinema();
break;
default :
GetItem( cinemaMenu( APPLE_MENU_ID - BASE_MENU_ID ), theItem, accName );
accNumber = OpenDeskAcc( accName );
break;
}
}
/* --------------------------------------------------------------------------------- */
static void eventFileMenu( short theItem )
{
switch ( theItem )
{
case CONVERT_ITEM :
picsToMovieInteractive();
break;
case PREFS_ITEM :
preferencesDialog( nil );
break;
case QUIT_ITEM :
installProgramStatus( PS_APP_DONE );
break;
}
}
/* --------------------------------------------------------------------------------- */
static void aboutCinema( void )
{
DialogPtr theDialog;
GrafPtr old;
short itemHit;
Boolean dialogDone = false;
theDialog = GetNewDialog( ABOUT_DIALOG, NULL, (WindowPtr) -1 );
if (theDialog == NULL)
return;
GetPort( &old );
SetPort( theDialog );
ShowWindow( theDialog );
while (!dialogDone)
{
ModalDialog( aboutDialogFilter, &itemHit );
switch( itemHit )
{
case ABOUT_PICT_ITEM:
case ABOUT_FAKE_ITEM:
dialogDone = true;
break;
}
}
SetPort( old );
DisposDialog( theDialog );
}
/* --------------------------------------------------------------------------------- */
static pascal Boolean aboutDialogFilter( DialogPtr whichDialog, EventRecord * event,
short * itemHit )
{
#define returnKey 13
#define enter 3
#define esc 27
#define pushButton (ctrlItem + btnCtrl)
Handle itemHandle;
Rect itemRect;
long finalTicks;
short itemType;
Boolean filtered;
char key;
filtered = false;
switch ((*event).what)
{
case keyDown:
case autoKey:
key = (*event).message & charCodeMask;
if ((key == returnKey) || (key == enter) || (key == esc))
{
if ((key == returnKey) || (key == enter))
*itemHit = ok;
else
*itemHit = cancel;
GetDItem (whichDialog, *itemHit, &itemType, &itemHandle, &itemRect);
if ((itemType & itemDisable) == 0)
{
if ((itemType & (255 - itemDisable)) == pushButton)
{
HiliteControl ((ControlHandle) itemHandle, inButton);
Delay (8, &finalTicks);
HiliteControl ((ControlHandle) itemHandle, 0);
}
filtered = true;
}
}
break;
}
return filtered;
}